﻿using System;
using System.Text;
using System.Drawing;
using System.Buffers;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;

public static partial class glDRIVE
{
    /*
    求解二阶边值问题试射法.cpp
    n积分区间等分数
    a积分区间左端点
    b积分区间右端点。要求b>a。
    eps控制精度要求
    y[n+1]y[0]存放左端点边界值y(a)，y[n]存放右端点边界值y(b)。
    返回n+1个等距离散点上的数值解。
    f计算二阶常微分方程右端函数f(t,y,z)
    函数返回y在左端点处的一阶导数值
    */

    public static string drive_shoot()
    {
        int k;
        double dy0;
        double[] y = new double[11];

        y[0] = 0.0;
        y[10] = 1.0;
        gl.f_abc = f_shoot;
        dy0 = gl.shoot(10, 0.0, 1.0, 0.0000001, y);
        return gl.html_table("求解二阶边值问题试射法，初始斜率=" + dy0 + "，数值解 y", y);
    }

    // 计算二阶微分方程右端函数值
    private static double f_shoot(double t, double y, double z)
    {
        double d;
        d = t + y;
        return (d);
    }
}